// pages/answerSheetPage/index.js
Page({

    /**
     * 页面的初始数据
     */
    data: {
        answerSheet:null, // 答题卡
        total:0, // 总题目数量
        userId: '',
        examName:'',
        userAvatarUrl: '', // 用户头像
        userNickName: '', // 用户nickname
        canUse: false
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        // 获取从考试页面传递过来的参数
        var t_sheet = JSON.parse(options.answerSheet)
        this.setData({
            answerSheet: t_sheet,
            total: options.total,
            userId: options.userId,
            examName: options.examName
        });
    },

    getUserProfile(e) {
        // 推荐使用wx.getUserProfile获取用户信息，开发者每次通过该接口获取用户个人信息均需用户确认，开发者妥善保管用户快速填写的头像昵称，避免重复弹窗
        wx.getUserProfile({
          desc: '获取用户信息，更新排行榜', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
          success: (res) => {
            console.log(res)
            this.setData({
                userAvatarUrl: res.userInfo.avatarUrl,
                userNickName: res.userInfo.nickName,
                canUse: true
            })
          }
        })
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {

    },

    // 更新排行榜函数，在提交答题卡函数中调用
    updateRank:function(score){
        var app = getApp();
        var url = app.globalData.global_url;
        wx.request({
            url: url+'/rank/',//'http://localhost:8000/rank/',
            data: {
                userAvatarUrl: this.data.userAvatarUrl,
                userNickName:this.data.userNickName,
                userId: this.data.userId,
                score: score
            },
            method : 'POST',
            success: function (response) {
                if(response.statusCode == 200){
                    wx.showModal({
                        title: '成功交卷',
                        // showCancel: false,
                        content: '提交成功，您的成绩为：' + score + '分',
                        confirmText:'回到主页',
                        success (res) {
                          if (res.confirm) {
                            wx.switchTab({
                              url: '/pages/homePage/index',
                            })
                          } 
                        }
                    })
                }
                else{
                    wx.showToast({
                        title: '更新积分失败',
                        icon: 'error',
                        duration: 2000
                    })
                }
            },
            fail:function(response){
                wx.showToast({
                    title: '服务器错误',
                    icon: 'error',
                    duration: 2000
                })
            }
        })
    },

    // 提交成绩单函数
    submitToServer:function(){
        var answerSheet = this.data.answerSheet
        var userId = this.data.userId
        var examName = this.data.examName
        var updateRank = this.updateRank
        var app = getApp();
        var url = app.globalData.global_url;
        wx.request({
            url: url+'/exam/',//'http://localhost:8000/exam/',
            data: {
                answerSheet: answerSheet,
                userId : userId,
                examName : examName
            },
            method : 'POST',
            success: function (response) {
                console.log(response)
                if(response.statusCode == 200){
                    var score = response.data.score
                    updateRank(score) // 提交答题卡后，发起更新排行榜积分的请求
                }
                else{
                    wx.showToast({
                        title: '提交答题卡失败',
                        icon: 'error',
                        duration: 2000
                    })
                }
            },
            fail:function(response){
                wx.showToast({
                    title: '服务器错误',
                    icon: 'error',
                    duration: 2000
                })
            }
        })
    },
    
    //处理点击“提交答案”按钮函数
    clickConfirm:function(){
        if(this.data.canUse){
            var answerSheet = this.data.answerSheet
            var length = this.data.total
            var that = this
            var submitToServer = this.submitToServer
            // 判断是否完成
            var finish = true
            for(var i=0; i<length; i++)
            {
                if(answerSheet[i].option == ' ' || answerSheet[i].userAnswer == ' '){
                    finish = false
                }
            }
            // 未完成提醒用户
            if(!finish){
                wx.showModal({
                    title: '确认交卷',
                    content: '未完成全部选项，确认交卷？',
                    success (res) {
                    if (res.confirm) {
                        submitToServer()
                    } else if (res.cancel) {
                        console.log('用户点击取消')
                    }
                    }
                })
            }
            // 完成确认提交
            else{
                wx.showModal({
                    title: '确认交卷',
                    content: '确认交卷？',
                    success (res) {
                        if (res.confirm) {
                            submitToServer()
                        } else if (res.cancel) {
                            console.log('用户点击取消')
                        }
                    }
                })
            }
        }
        else{
            this.getUserProfile()
        }
    },
})